////////////////////////////////////////////////////////////////////////////////

#ifndef _PHYSICALOBJECT_H_
#include "physicalobject.h"
#endif

////////////////////////////////////////////////////////////////////////////////


PhysicalObject::PhysicalObject( PE::Point _position,
                                PE::Vector _velocity,
                                double _mass,
                                double _radius,
                                double _resistanceCoeff )
: m_Position(_position),
  m_Velocity(_velocity),
  m_Mass(_mass),
  m_Radius(_radius),
  m_ResistanceCoefficient(_resistanceCoeff)
{
}


////////////////////////////////////////////////////////////////////////////////


PhysicalObject::~PhysicalObject()
{
}


////////////////////////////////////////////////////////////////////////////////


PE::Point PhysicalObject::GetPosition() const
{
    return m_Position;
}


////////////////////////////////////////////////////////////////////////////////


PE::Vector PhysicalObject::GetVelocity() const
{
    return m_Velocity;
}


////////////////////////////////////////////////////////////////////////////////


double PhysicalObject::GetMass() const
{
    return m_Mass;
}


////////////////////////////////////////////////////////////////////////////////


double PhysicalObject::GetRadius() const
{
    return m_Radius;
}


////////////////////////////////////////////////////////////////////////////////


double PhysicalObject::GetResistanceCoefficient() const
{
    return m_ResistanceCoefficient;
}


////////////////////////////////////////////////////////////////////////////////


void PhysicalObject::SetPosition(PE::Point _position)
{
    m_Position = _position;
}


////////////////////////////////////////////////////////////////////////////////


void PhysicalObject::SetVelocity( PE::Vector _velocity )
{
    m_Velocity = _velocity;
}


////////////////////////////////////////////////////////////////////////////////


void PhysicalObject::ApplyImpulse(PE::Direction _dir, double _force)
{
    // Calculate new velocity
    m_Velocity.vx += _force * _dir.dx / m_Mass;
    m_Velocity.vy += _force * _dir.dy / m_Mass;
}


////////////////////////////////////////////////////////////////////////////////
